Title Banner

Previous Book Contents Book Index Next

Inside Macintosh: Telephony /
Chapter 4 - Call Appearances


Using Call Appearances

You can use the Telephone Manager to place outgoing calls, answer incoming calls, reject incoming calls, place incoming calls on hold, retrieve a held call, transfer a call, place a callback, and perform a number of other operations on incoming and outgoing call appearances. This section describes how to perform some of these tasks.

Placing an Outgoing Call

To place an outgoing call, you must first have performed all the required initialization and opened a terminal. Then you can use the TELDialDigits function to dial a specified directory number. Listing 4-1 illustrates how to place an outgoing call.

Listing 4-1 Placing an outgoing call

OSErr MyPlaceCall (TELHandle myTelRec)
{
   OSErr       myErr;
   TELDNHandle myDN;
   TELCAHandle myCA;
   
   myErr = TELDNLookupByIndex(myTelRec, telAllDNs, true, 1, &myDN);
   if (!myErr) {
      myErr = TELSetupCall(myDN, &myCA, nil, nil, nil, nil, 0, 0);
      if (!myErr) {
         long  myTicks;
         
         myErr = TELDialDigits(myCA, "\p5551212");
         if (!myErr) {
            Delay(20*60, &myTicks);
            TELDrop(myCA, nil);
         }
         TELCADispose(myCA);
      }
      TELDNDispose(myDN);
   }
   
   return(myErr);
}
Listing 4-2 provides the source code for a complete application that places an outgoing call. Several of the functions it uses have been defined in earlier chapters.

Listing 4-2 A complete telephony application

#include <stdio.h>#include <stdlib.h>#include <time.h>#include <CommResources.h>#include "Telephones.h"
OSErr       MyInitCTBManagers (void);
short       MyGetFirstTelTool (void);
OSErr       MyPlaceCall (TELHandle myTelRec);

OSErr MyInitCTBManagers (void)
{
   OSErr    myErr = noErr;

   myErr = InitCRM();          //initialize Comm'ns Resource Manager
   if (myErr == noErr) {       //initialize CTB Utilities
       myErr = InitCTBUtilities();
       if (myErr == noErr)
           myErr = InitTEL();  //initialize Telephone Manager
   }

   return(myErr);
}

short MyGetFirstTelTool (void)
{
   OSErr    myErr = noErr;
   short    myIndex;
   short    myID = -1;
   Str255   myName;

   for (myIndex = 1; myID == -1; myIndex++) {
      myErr = CRMGetIndToolName(classTEL, myIndex, myName);
      if (myErr != noErr)
          break;
      if (*myName == nil)
         break;
      myID = TELGetProcID(myName);
   }

   return(myID);
}

OSErr MyPlaceCall (TELHandle myTelRec)
{
   OSErr       myErr;
   TELDNHandle myDN;
   TELCAHandle myCA;
   
   myErr = TELDNLookupByIndex(myTelRec, telAllDNs, true, 1, &myDN);
   if (!myErr) {
      myErr = TELSetupCall(myDN, &myCA, nil, nil, nil, nil, 0, 0);
      if (!myErr) {
         long  myTicks;
         
         myErr = TELDialDigits(myCA, "\p5551212");
         if (!myErr) {
            Delay(20*60, &myTicks);
            TELDrop(myCA, nil);
         }
         TELCADispose(myCA);
      }
      TELDNDispose(myDN);
   }
   
   return(myErr);
}

void main (void)
{
   if (MyInitCTBManagers() == noErr) {
      short myID = MyGetFirstTelTool();
      if (myID != -1) {
         TELHandlemyTelRec;
         OSErr    myErr;
         
         myTelRec = TELNewWithResult(id, 0, 0, 0, &myErr);
         if (!myErr)  {
            Point    myPoint = {80, 80};
            myErr = TELChoose(&myTelRec, myPoint, nil);
            myErr = TELOpenTerm(myTelRec);
            if (!myErr) {
               myErr = MyPlaceCall(myTelRec);
               TELCloseTerm(myTelRec);
            }
            TELDispose(myTelRec);
         }
      }
   }
}

Previous Book Contents Book Index Next

© Apple Computer, Inc.
13 DEC 1996



Navigation graphic, see text links

Main | Top of Section | What's New | Apple Computer, Inc. | Find It | Feedback | Help